/**
 * 时间戳转为多久之前
 * @param String dateTime 时间戳
 * @param String | format 判断类型
 * 如果为布尔值true，返回时间类型
 * |'yyyy年MM月dd日  hh:mm:ss,第qq季度,w'
 * 如果为布尔值false，返回一段时间内的多久之前:15天
 */
export function timeFrom(dateTime = null, format = false) {
	// 返回值
	let tips = '';
	let timeData = new Date(dateTime).getTime()
	if (timeData.toString().length == 10) timeData *= 1000;
	if (format) {
		tips = timeFormatPipe(timeData, format);
	} else {
		// 如果为null,则格式化当前时间
		if (!dateTime) dateTime = Number(new Date());
		// 如果dateTime长度为10或者13，则为秒和毫秒的时间戳，如果超过13位，则为其他的时间格式
		if (dateTime.toString().length == 10) dateTime *= 1000;
		let timestamp = +new Date(Number(dateTime));
		let timer = (Number(new Date()) - timestamp) / 1000;
		// 如果小于5分钟,则返回"刚刚",其他以此类推
		switch (true) {
			case timer < 300:
				tips = '刚刚';
				break;
			case timer >= 300 && timer < 3600:
				tips = parseInt(timer / 60) + '分钟前';
				break;
			case timer >= 3600 && timer < 86400:
				tips = parseInt(timer / 3600) + '小时前';
				break;
			case timer >= 86400 && timer < 2592000:
				tips = parseInt(timer / 86400) + '天前';
				break;
			case timer >= 2592000 && timer < 365 * 86400:
				tips = parseInt(timer / (86400 * 30)) + '个月前';
				break;
			default:
				tips = parseInt(timer / (86400 * 365)) + '年前';
		}
	}
	return tips;
}
export function timeFormatPipe(value, fmt = 'yyyy-MM-dd hh:mm:ss') {
	let date = new Date(value);
	if (value.toString().length == 10) {
		date = new Date(value * 1000);
	}
	if (isNaN(date.getTime())) {
		return '传入格式有误';
	}
	var o = {
		"M+": date.getMonth() + 1, //月份
		"d+": date.getDate(), //日
		"h+": date.getHours(), //小时
		"m+": date.getMinutes(), //分
		"s+": date.getSeconds(), //秒
		"w+": date.getDay(), //星期
		"q+": Math.floor((date.getMonth() + 3) / 3), //季度
		"S": date.getMilliseconds() //毫秒
	};
	if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
	for (var k in o) {
		if (k === 'w+') {
			if (o[k] === 0) {
				fmt = fmt.replace('w', '周日');
			} else if (o[k] === 1) {
				fmt = fmt.replace('w', '周一');
			} else if (o[k] === 2) {
				fmt = fmt.replace('w', '周二');
			} else if (o[k] === 3) {
				fmt = fmt.replace('w', '周三');
			} else if (o[k] === 4) {
				fmt = fmt.replace('w', '周四');
			} else if (o[k] === 5) {
				fmt = fmt.replace('w', '周五');
			} else if (o[k] === 6) {
				fmt = fmt.replace('w', '周六');
			}
		} else if (new RegExp("(" + k + ")").test(fmt)) {
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
		}
	}
	return fmt;
}